package com.lrd.snapshotorder.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lrd.snapshotorder.entity.OrderTask;
import com.lrd.snapshotorder.protocol.dto.order.OrderTaskQueryDto;

public interface OrderTaskMapper extends BaseMapper<OrderTask> {

    default Page<OrderTask> orderTaskList(OrderTaskQueryDto queryDto) {

        return this.selectPage(
                new Page<>(queryDto.getPageIndex(), queryDto.getPageSize()),
                Wrappers.lambdaQuery(OrderTask.class)
                        .eq(queryDto.getBatchNumber() != null, OrderTask::getBatchNumber, queryDto.getBatchNumber())
                        .ge(queryDto.getPostTimeBegin() != null, OrderTask::getPostTime, queryDto.getPostTimeBegin())
                        .le(queryDto.getPostTimeEnd() != null, OrderTask::getPostTime, queryDto.getPostTimeEnd())
                        .orderByDesc(OrderTask::getId)
        );
    }

    default boolean selectBatchNumberIsExist(int batchNumber) {
        LambdaQueryWrapper<OrderTask> orderTaskQuery = Wrappers.lambdaQuery(OrderTask.class);
        orderTaskQuery.eq(OrderTask::getBatchNumber, batchNumber);
        return this.selectCount(orderTaskQuery) > 0;
    }
}